﻿using System;
using System.Collections.Generic;

namespace HumanWorkflow.Interface
{
    public interface IHumanWorkflow
    {
        string CurrentStep { get; }
        string CurrentRole { get; }

        List<string> GetValidTransitions();

        /// <exception cref="HumanWorkflow.Interface.InvalidTransitionException">Thrown when the provided transition is not an outgoing transition from the current step.</exception>
        void RaiseTransition(string transitionName);

        event EventHandler BeforeStep;
        event EventHandler AfterStep;
    }
}
